import Notify from '@/components/prompt/prompt.js'
export default {
  install(Vue) {
    Vue.directive('focus', {
      inserted(el) {
        el.focus();
      }
    })
    // 手机号校验
    /**
     * 手机号校验方法
     * @param {HTMLElement} el - 指令绑定的元素
     * @param {Object} binding - 一个对象，包含指令的各种信息，如绑定的值、参数等
     */
    // 手机号校验指令失焦事件
    Vue.directive('phone-check', {

      inserted(el, binding) {
        const triggerType = binding.arg || 'blur'; // 默认触发方式：失焦（blur）
        const validateCallback = typeof binding.value === 'function' ? binding.value : null;
        const validate = () => {
          // 可通过 binding.value 传递配置（比如是否显示提示、空值是否校验）
          const options = typeof binding.value === 'object' ? binding.value : {};
          const { showNotify = true, allowEmpty = false } = options;

          // 调用 phoneValidate，传入配置
          const isValid = phoneValidate(el, { showNotify, allowEmpty });

          // 执行回调，传递校验结果
          if (validateCallback) {
            validateCallback(isValid);
          }
        };
      }
    })
    function phoneValidate(el, binding) {
      if (!el.value) return false
      const phone = el.value;
      if (!/^1[3456789]\d{9}$/.test(phone)) {
        Notify({
          message: '请输入正确的手机号',
          type: 'danger'
        })
        // 校验失败时，将元素的 value 设为空字符串
        el.value = ''
        return false
      }
      return true
    }
  },

};